草庐IT

Sonar Qube

全部标签

java - 定义常量的 Sonar 方法

我使用Sonarqube5.1并尝试使用“SonarWay”Java质量配置文件。工作很简单:我想为缺少的媒体类型定义一个全局字符串常量:publicinterfaceUtf8MediaType{StringAPPLICATION_JSON="application/json;charset=UTF-8";}但是,Sonarqube告诉我这是规则squid:S1214中的不良做法–常量不应在接口(interface)中定义。长篇大论说要实现这个接口(interface),我不是有意为之,但我让步了,而是创建了一个类:publicclassUtf8MediaType{publicstat

java - 降低java方法的圈复杂度

我有以下方法:privatevoidsetClientAdditionalInfo(Mapmap,Clientclient,Useruser){MapadditionalInfo=(Map)map.get("additionalInfo");if(checkMapProperty(additionalInfo,"gender")){client.setGender(additionalInfo.get("gender").toString());}if(checkMapProperty(additionalInfo,"race")){client.setRace(additionalI

java - 将 Spock 与 Jenkins、Sonar 集成的最佳实践

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭去年。Improvethisquestion我们决定尝试使用Spock作为我们基于Java的EE应用程序的测试框架。目前我们有基于jenkins+maven+jacoco部署的CI基础设施。问:问题是将spock与所有这些集成的最佳方式是什么?有什么建议和最佳做法吗?

java - Java 包之间的每个循环引用都不好吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭去年。Improvethisquestion我使用Sonar代码质量管理平台已有一段时间了,在大多数情况下,我发现它对揭示代码库中隐藏的设计缺陷非常有帮助。但是,有一条规则给我带来的麻烦多于帮助,那就是它检查'循环包引用'违规行为。我想我完全理解包之间的这种依赖性在哪里是一件坏事。例如,在典型的3层表示/服务/持久层设计中,让数据库处理代码引用回UI相关类几乎总是一个坏主意。我不介意称之为“违规”。但是让我们考虑其他情况,例如设计类似

java - SonarQube 代码重复检测器是否可以参数化以停止在方法边界上?

我在我的Java项目中使用SonarQube,并希望尽可能地从我们的代码中消除代码重复。我的问题是SonarQube的代码重复检测没有考虑方法边界。它将文件的相同部分列为重复项,并且经常发生重复项从一个方法的中间开始并在另一个方法的中间结束。这些很难重构。这是一个example.点击右上方列表框MavenArtifactRepository.java文件,查看页面下方第4个复制block。有没有什么方法可以参数化代码重复检测器插件以显示重复,这些重复在语法上是一致的? 最佳答案 目前您无法通过配置SonarQube本身来实现。但是,

java - SonarQube 问题 "Add at least one assertion to this test case"用于带有断言的单元测试?

我在使用SonarQube时遇到问题,我的几个单元测试出现了问题,提示了以下问题:Addatleastoneassertiontothistestcase.每个测试用例都类似于这种格式(其中许多断言被委托(delegate)给具有公共(public)断言的方法,以避免重复):@TestpublicvoidcompanyNameOneTooLong()throwsException{AddressFormBeanformBean=getValidBean();formBean.setCompanyNameOne("123456789012345678901234567890123456"

java - SonarQube 声明对于使用 "this."访问的字段始终评估为 false 的条件

这似乎是“条件执行的block应该是可访问的”规则误报的新示例(squid:S2583)。有谁知道为什么SonarQube声称if(this.x==0)在以下Java类中总是求值为false?publicclassMyClass{privatelongx;voidsetX(longx){this.x=x;}publicvoiddecrementX(){if(this.x>0){this.x--;if(this.x==0){//很明显,变量x可以设置为1,然后decrementX()将进入那个确切的条件:@TestpublicvoidtestDecrement(){MyClassc=ne

java - Sonar Java : check the quality of the test classes source code?

是否可以在Sonar中检查*Test.java源代码的质量,例如方法最大尺寸100行?问题是,JavaJunit测试随着生产代码的增加而增加,复杂性也在增加。我们有超过1000行和2个方法的单元测试类。我们想在Sonar中检查这些*Test.java类的一些规则。 最佳答案 从Sonar3.1开始,它包含一个插件,该插件具有针对单元测试执行的特定PMD规则(aJIRAwascreatedforthat)。您可以在Configuration>QualityProfiles>CodingRules中看到它们。但是,您似乎想要对测试源代码

java - 枚举的字段是否必须是可序列化的?

我正在通过SonarQube5.1版分析JavaSE7项目。然后,我在下面的代码中遇到了squid:S1948。Fieldsina"Serializable"classshouldeitherbetransientorserializableFieldsinaSerializableclassmustthemselvesbeeitherSerializableortransienteveniftheclassisneverexplicitlyserializedordeserialized.That'sbecauseunderload,mostJ2EEapplicationframew

java - 为什么返回 this.variable 不是漏洞?

Sonar规则squid:S2384对此代码提出问题:publicDategetCreatedOn(){returncreatedOn;}遵循规则Mutablemembersshouldnotbestoredorreturneddirectly我知道我们不应该返回原始对象,而应该返回对象的副本。另一方面,Sonar没有针对这段代码提出问题:publicDategetCreatedOn(){returnthis.createdOn;}这段代码有什么不同?第二种情况我们不退回原件吗? 最佳答案 这是SonarJava(SonarQube